home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mac-Source 1994 July
/
Mac-Source_July_1994.iso
/
C and C++
/
Science⁄Math
/
Gnuplot 3.5 for Macintosh
/
SOURCES 3.5
/
term
/
tgif.trm
< prev
next >
Wrap
Text File
|
1993-11-03
|
5KB
|
259 lines
/*
* $Id: tgif.trm%v 3.50 1993/07/09 05:35:24 woo Exp $
*/
/* N O T F I N I S H E D ! ! ! ! ! ! ! */
/* GNUPLOT - tgif.trm */
/*
* Copyright (C) 1990
*
* Permission to use, copy, and distribute this software and its
* documentation for any purpose with or without fee is hereby granted,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation.
*
* Permission to modify the software is granted, but not the right to
* distribute the modified code. Modifications are to be distributed
* as patches to released version.
*
* This software is provided "as is" without express or implied warranty.
*
* This file is included by ../term.c.
*
* This terminal driver supports:
* tgif
*
* AUTHORS
* Neal Holtz
*
* send your comments or suggestions to (info-gnuplot@dartmouth.edu).
*
*/
/* tgif driver by Neal Holtz, holtz@civeng.carleton.ca */
#include "tgif.h"
#define TGIF_XMAX 750
#define TGIF_YMAX 750
#define TGIF_XLAST (TGIF_XMAX - 1)
#define TGIF_YLAST (TGIF_YMAX - 1)
#define TGIF_VTIC (TGIF_YMAX/80)
#define TGIF_HTIC (TGIF_YMAX/80)
/* TGIF Courier size 5 = 15x24, size 4 = 11x19, size 3 = 9x16
ascender+descender = 19+5, 15+4, 13+3 */
#define TGIF_VCHAR1 19
#define TGIF_HCHAR1 11
#define TGIF_CHAR_ASC 15
#define TGIF_CHAR_DESC (TGIF_VCHAR1-TGIF_CHAR_ASC)
#define YTRANS(y) (TGIF_YMAX-(y))
typedef struct {
int x, y;
} Tgif_point;
int tgif_fileVersion = 10;
int tgif_just = JUST_L;
int tgif_ang = ROTATE0;
int tgif_font = FONT_HEL;
int tgif_style = STYLE_NR; /* text style */
int tgif_size = 4; /* text size */
int tgif_asc = TGIF_CHAR_ASC; /* text ascender, descender */
int tgif_des = TGIF_CHAR_DESC;
int tgif_linewidth = LINE_MEDIUM;
int tgif_dash = 0;
char *tgif_colour = "yellow";
int tgif_objId = 100;
#define TGIF_VSINIT 100
#define TGIF_VSINCR 100
int tgif_vsmax = 0; /* max possible number of vertices */
int tgif_nv = 0; /* current number of vertices */
Tgif_point *tgif_v = NULL; /* coordinates of vertices of polyline */
TGIF_AddVertex( x, y )
int x, y;
{
Tgif_point *p;
if( tgif_v == NULL ) {
tgif_v = (Tgif_point *)malloc( TGIF_VSINIT*sizeof(Tgif_point) );
tgif_nv = 0;
if( tgif_v == NULL ) {
fprintf( stderr, "Unable to malloc() space for vertices.\n" );
exit( 1 );
}
tgif_vsmax = TGIF_VSINIT;
}
if( tgif_nv >= tgif_vsmax ) {
tgif_v = (Tgif_point *)realloc( tgif_v, (tgif_vsmax+TGIF_VSINCR)*sizeof(Tgif_point) );
if( tgif_v == NULL ) {
fprintf( stderr, "Unable to realloc() space for vertices.\n" );
exit( 1 );
}
tgif_vsmax += TGIF_VSINCR;
}
p = tgif_v + tgif_nv++;
p->x = x;
p->y = YTRANS(y);
if( tgif_nv > 1 && p[-1].x == p[0].x && p[-1].y == p[0].y )
tgif_nv--;
}
TGIF_Flush( lstyle )
int lstyle; /* line style */
{
int i;
if( tgif_nv >= 2 ) {
fprintf( outfile, "poly('%s',%d,[%d,%d",
tgif_colour, tgif_nv, tgif_v[0].x, tgif_v[0].y );
for( i = 1; i < tgif_nv; i++ )
fprintf( outfile, ",%d,%d", tgif_v[i].x, tgif_v[i].y );
fprintf( outfile, "],%d,%d,%d,%d,%d,%d,%d,[\n]).\n",
lstyle, tgif_linewidth, 1, /* style, width, pen */
tgif_objId++,
0, 0, /* curved, fill */
tgif_dash );
}
tgif_nv = 0;
}
TGIF_init()
{
tgif_just = JUST_L;
tgif_ang = ROTATE0;
tgif_font = FONT_HEL;
tgif_style = STYLE_NR;
tgif_linewidth = LINE_MEDIUM;
tgif_dash = 0;
tgif_nv = 0;
}
TGIF_graphics()
{
fprintf(outfile,"state(0,%d,0,0,0,16,1,0,2,1,0,0,1,0,1,0,1,0,3,0,0).\n", tgif_fileVersion);
fprintf(outfile,"%%\n");
fprintf(outfile,"%% @(#)$Header: /a/woo/src/gwork/term/RCS/tgif.trm%v 3.50 1993/07/09 05:35:24 woo Exp $\n");
fprintf(outfile,"%%\n");
tgif_nv = 0;
}
TGIF_text()
{
TGIF_Flush(LS_PLAIN);
}
TGIF_reset()
{
TGIF_Flush(LS_PLAIN);
}
TGIF_linetype(linetype)
int linetype;
{
TGIF_Flush(LS_PLAIN);
if( linetype == -2 ) /* use thinner lines for border and axis */
tgif_dash = 0, tgif_linewidth = LINE_THIN;
else if( linetype == -1 )
tgif_dash = 1, tgif_linewidth = LINE_THIN;
else
tgif_dash = linetype % MAXDASHES, tgif_linewidth = LINE_MEDIUM;
}
TGIF_move(x,y)
unsigned int x,y;
{
TGIF_Flush(LS_PLAIN);
TGIF_AddVertex( x, y );
}
TGIF_vector(x,y)
unsigned int x,y;
{
TGIF_AddVertex( x, y );
}
TGIF_put_text(x,y,str)
unsigned int x, y;
char *str;
{
TGIF_Flush(LS_PLAIN);
fprintf( outfile, "text('%s',%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,[\n\t\"%s\"]).\n",
tgif_colour,
x, YTRANS(y)-(TGIF_CHAR_DESC+(TGIF_CHAR_ASC/2)),
tgif_font, tgif_style, tgif_size,
1, /* number of lines */
tgif_just, tgif_ang,
1, /* pen */
TGIF_HCHAR1*strlen(str), TGIF_VCHAR1,
tgif_objId++,
0, /* dpi */
tgif_asc, tgif_des,
str );
}
int TGIF_text_angle(ang)
int ang;
{
TGIF_Flush(LS_PLAIN);
if( ang == 1 )
tgif_ang = ROTATE270;
else
tgif_ang = ROTATE0;
return TRUE;
}
int TGIF_justify_text(mode)
enum JUSTIFY mode;
{
TGIF_Flush(LS_PLAIN);
switch(mode) {
case LEFT:
tgif_just = JUST_L;
break;
case CENTRE:
tgif_just = JUST_C;
break;
case RIGHT:
tgif_just = JUST_R;
break;
default:
tgif_just = JUST_L;
break;
}
return TRUE;
}
TGIF_arrow( sx, sy, ex, ey )
int sx, sy, ex, ey;
{
TGIF_Flush(LS_PLAIN);
TGIF_AddVertex( sx, sy );
TGIF_AddVertex( ex, ey );
TGIF_Flush(LS_RIGHT);
}